<?php

/**
*	Obtiene todos los servicios en estado publicado (estado=1) con idioma y si no existe el idioma selecciona otro 
*   api_key: Api proporcionada por somxarxa para el hotel
* 	id_hotel: Identificador del hotel
* 	idioma: Idioma para obtener la info [0,1,2]
*/
function getInfoHotel() {
	global $app;
	$app->getLog()->info("getInfoHotel");

	$api_key = getAPIKey();
	$id_hotel = getIdHotel();
	
	if(!isValidAPIKey($id_hotel, $api_key)){
		$app->getLog()->error("API_KEY ERROR: " . $id_hotel . " API_KEY: " . $api_key);
		echo '{"error":{"text":'. ERROR_API_KEY .'}}'; 
		return -1;
	}
	
	$idioma = getIdioma();

    $sql = "SELECT `id`, `nombre_completo`, `direccion`, `latitud`, `longitud`, `tlf`, `email` FROM `hotel` WHERE id=:id_hotel";
	
	try {
		$db = getConnection();
		$stmt = $db->prepare($sql);
		//$stmt->bindParam("idioma", $idioma);
		$stmt->bindParam("id_hotel", $id_hotel);
		$stmt->execute();
		$infoHotel = $stmt->fetch(PDO::FETCH_OBJ);
		$db = null;
		echo $_GET['callback']."(".json_encode($infoHotel).");";
		
	} catch(PDOException $e) {
		echo '{"error":{"text":'. $e->getMessage() .'}}'; 
	}
}


/**
*	Obtiene los datos de estado de susbscripcion al servicio
*/
function getApiStatusHotel($id_hotel) {
	global $app;
	$app->getLog()->info("getApiStatusHotel");

    $sql = "SELECT `paquete`, `estado`, `api_key` FROM `hotel` WHERE id=:id_hotel";
	
	try {
		$db = getConnection();
		$stmt = $db->prepare($sql);
		$stmt->bindParam("id_hotel", $id_hotel);
		$stmt->execute();
		$infoHotel = $stmt->fetchAll(PDO::FETCH_OBJ);
		$db = null;
		return $infoHotel;
		
	} catch(PDOException $e) {
		echo '{"error":{"text":'. $e->getMessage() .'}}';
		return "";
	}
}

/**
* Obtiene el tiempo actual de la 
*/
function getWeatherInfo() {
	global $app;
	$app->getLog()->info("getWeatherInfo");
	
	$api_key = getAPIKey();
	$id_hotel = getIdHotel();
	
	if(!isValidAPIKey($id_hotel, $api_key))
	{
		$app->getLog()->error("API_KEY ERROR: " . $id_hotel . " API_KEY: " . $api_key);
		echo '{"error":{"text":'. ERROR_API_KEY .'}}'; 
		return -1;
	}
	
	//Get Position
	$hotelPos = getHotelPosition($id_hotel); 

	//273.15 para pasar a celsius
	$kelvinBase = 273.15;

	//$url = "http://api.openweathermap.org/data/2.5/weather?lat=40&lon=0";
	$url = "http://api.openweathermap.org/data/2.5/weather?";

	$url = $url . "lat=" . $hotelPos->latitud . "&";
	$url = $url . "lon=" . $hotelPos->longitud;


	//TODO: Crear una cache con id_hotel y datos weather(elegir) y consultar antes esta cache
	try 
	{	
		$json = fetch($url);
		$json = trim($json);
		$json = mb_convert_encoding($json, 'HTML-ENTITIES', "UTF-8");
		//echo $json;
		$weather = json_decode($json);
		$weatherMain = $weather->{'main'};
		$weatherWeather = $weather->weather;
		
		$temp = $weatherMain->{'temp'}-$kelvinBase;
		$temp = round( $temp, 0, PHP_ROUND_HALF_UP);
		$weatherId = $weatherWeather[0]->id; 

		$weatherInfo = new stdClass();
		$weatherInfo->temp = $temp;
		$weatherInfo->image = $weatherId; 
		//TODO: añadir más atributos

		//echo $_GET['callback']."(".$weatherInfo.");";
		echo $_GET['callback']."(".json_encode($weatherInfo).");";
	} 
	catch(Exception $e) 
	{
		return '{"error":{"text":'. $e->getMessage() .'}}';
	}
}

function fetch($url)
{
	return file_get_contents($url);
}

function getHotelPosition($id_hotel) {

    $sql = "SELECT `latitud`, `longitud` FROM `hotel` WHERE id=:id_hotel";
	
	try 
	{
		$db = getConnection();
		$stmt = $db->prepare($sql);
		//$stmt->bindParam("idioma", $idioma);
		$stmt->bindParam("id_hotel", $id_hotel);
		$stmt->execute();
		$infoHotel = $stmt->fetch(PDO::FETCH_OBJ);
		$db = null;
		return $infoHotel;
		
	} 
	catch(PDOException $e) 
	{
		echo '{"error":{"text":'. $e->getMessage() .'}}'; 
	}

	return "";
}

?>